/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：JointFigure.js<br>
 * 日期：2016年11月10日<br>
 * 作者: 王志远<br>
 * 功能：节点图元<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.JointLocator<br>
 * 类型功能：节点定位器<br>
 */
Rainier.UI.V2.JointFigure = draw2d.shape.basic.Oval.extend({
	
	NAME : "Rainier.UI.V2.JointFigure",
	
	/**
	 * 函数名称：Rainier.UI.V2.JointFigure.init<br>
	 * 函数功能：构造函数<br>
	 * 异常信息：无<br>
	 */
	init: function(attr, setter, getter) {
		this._super(attr, setter, getter);
		this.attachedSegments = new draw2d.util.ArrayList();
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.JointFigure.setLineSegment<br>
	 * 函数功能：设置关联的连接线段<br>
	 * 参数输入：segment<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	addAttachedSegment : function(segment){
		var hasAttached = false;
		var _this = this;
		this.attachedSegments.each(function(i,seg){
			if(_this.isSameSegment(segment,seg)){
				hasAttached = true;
			}
		});
		if(!hasAttached){
			this.attachedSegments.add(segment);			
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.JointFigure.isSameSeg<br>
	 * 函数功能：判断两个线段是否为同一个线段<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	isSameSegment:function(seg1,seg2){
		if(		seg1.start.x === seg2.start.x && 
				seg1.start.y === seg2.start.y &&
				seg1.end.x   === seg2.end.x && 
				seg1.end.y   === seg2.end.y){
			return true;
		}
		return false;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.JointFigure.removeAttachedSegment<br>
	 * 函数功能：删除关联的线段<br>
	 * 参数输入：segment<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	removeAttachedSegment : function(segment){
		this.attachedSegments.remove(segment);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.JointFigure.clearAllAttachedSegment<br>
	 * 函数功能：清除所有关联的线段<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	clearAllAttachedSegment : function(){
		this.attachedSegments = null;
		this.attachedSegments = new draw2d.util.ArrayList();
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.JointFigure.getAttachedSegments<br>
	 * 函数功能：获取关联线段列表<br>
	 * 函数返回：draw2d.util.ArrayList<br>
	 * 异常信息：<br>
	 */
	getAttachedSegments : function(){
		return this.attachedSegments;
	}
});